tests(GROUPS correctness travis
        SOURCES
        align_bounds.cpp
        argmax.cpp
        assertion_failure_in_parallel_for.cpp
        async_copy_chain.cpp
        async.cpp
        async_device_copy.cpp
        atomics.cpp
        autodiff.cpp
        autoschedule_small_pure_update.cpp
        autotune_bug_2.cpp
        autotune_bug_3.cpp
        autotune_bug_4.cpp
        autotune_bug_5.cpp
        autotune_bug.cpp
        bad_likely.cpp
        bit_counting.cpp
        bitwise_ops.cpp
        bool_compute_root_vectorize.cpp
        boundary_conditions.cpp
        bound.cpp
        bounds.cpp
        bounds_inference_chunk.cpp
        bounds_inference_complex.cpp
        bounds_inference.cpp
        bounds_inference_outer_split.cpp
        bound_small_allocations.cpp
        bounds_of_abs.cpp
        bounds_of_cast.cpp
        bounds_of_func.cpp
        bounds_of_monotonic_math.cpp
        bounds_of_multiply.cpp
        bounds_query.cpp
        buffer_t.cpp
        cascaded_filters.cpp
        cast.cpp
        cast_handle.cpp
        c_function.cpp
        chunk.cpp
        chunk_sharing.cpp
        circular_reference_leak.cpp
        code_explosion.cpp
        compare_vars.cpp
        compile_to_bitcode.cpp
        compile_to.cpp
        compile_to_lowered_stmt.cpp
        compile_to_multitarget.cpp
        compute_at_reordered_update_stage.cpp
        compute_at_split_rvar.cpp
        computed_index.cpp
        compute_outermost.cpp
        compute_with.cpp
        compute_with_in.cpp
        compute_with_inlined.cpp
        concat.cpp
        constant_expr.cpp
        constant_type.cpp
        constraints.cpp
        convolution.cpp
        convolution_multiple_kernels.cpp
        cross_compilation.cpp
        custom_allocator.cpp
        custom_auto_scheduler.cpp
        custom_error_reporter.cpp
        custom_lowering_pass.cpp
        debug_to_file.cpp
        debug_to_file_multiple_outputs.cpp
        debug_to_file_reorder.cpp
        deferred_loop_level.cpp
        deinterleave4.cpp
        device_buffer_copy.cpp
        device_crop.cpp
        device_slice.cpp
        dilate3x3.cpp
        div_by_zero.cpp
        dynamic_allocation_in_gpu_kernel.cpp
        dynamic_reduction_bounds.cpp
        embed_bitcode.cpp
        erf.cpp
        exception.cpp
        explicit_inline_reductions.cpp
        external_code.cpp
        extern_bounds_inference.cpp
        extern_consumer.cpp
        extern_consumer_tiled.cpp
        extern_error.cpp
        extern_output_expansion.cpp
        extern_partial.cpp
        extern_producer.cpp
        extern_reorder_storage.cpp
        extern_sort.cpp
        extern_stage.cpp
        extern_stage_on_device.cpp
        failed_unroll.cpp
        fast_trigonometric.cpp
        fibonacci.cpp
        fit_function.cpp
        float16_t_comparison.cpp
        float16_t_constants.cpp
        float16_t.cpp
        float16_t_image_type.cpp
        force_onto_stack.cpp
        for_each_element.cpp
        func_clone.cpp
        func_lifetime_2.cpp
        func_lifetime.cpp
        func_wrapper.cpp
        fuse.cpp
        fused_where_inner_extent_is_zero.cpp
        fuse_gpu_threads.cpp
        fuzz_cse.cpp
        fuzz_float_stores.cpp
        fuzz_simplify.cpp
        gameoflife.cpp
        gather.cpp
        gpu_allocation_cache.cpp
        gpu_assertion_in_kernel.cpp
        gpu_bounds_inference_failure.cpp
        gpu_cpu_simultaneous_read.cpp
        gpu_data_flows.cpp
        gpu_different_blocks_threads_dimensions.cpp
        gpu_dynamic_shared.cpp
        gpu_free_sync.cpp
        gpu_give_input_buffers_device_allocations.cpp
        gpu_jit_explicit_copy_to_device.cpp
        gpu_large_alloc.cpp
        gpu_mixed_dimensionality.cpp
        gpu_mixed_shared_mem_types.cpp
        gpu_multi_device.cpp
        gpu_multi_kernel.cpp
        gpu_non_contiguous_copy.cpp
        gpu_object_lifetime_1.cpp
        gpu_object_lifetime_2.cpp
        gpu_object_lifetime_3.cpp
        gpu_param_allocation.cpp
        gpu_reuse_shared_memory.cpp
        gpu_specialize.cpp
        gpu_sum_scan.cpp
        gpu_thread_barrier.cpp
        gpu_transpose.cpp
        gpu_vectorized_shared_memory.cpp
        half_native_interleave.cpp
        halide_buffer.cpp
        handle.cpp
        heap_cleanup.cpp
        hello_gpu.cpp
        hexagon_scatter.cpp
        histogram.cpp
        histogram_equalize.cpp
        host_alignment.cpp
        image_io.cpp
        image_of_lists.cpp
        image_wrapper.cpp
        implicit_args.cpp
        implicit_args_tests.cpp
        infer_arguments.cpp
        inlined_generator.cpp
        inline_reduction.cpp
        in_place.cpp
        input_image_bounds_check.cpp
        input_larger_than_two_gigs.cpp
        integer_powers.cpp
        interleave.cpp
        interleave_rgb.cpp
        interleave_x.cpp
        interval.cpp
        introspection.cpp
        inverse.cpp
        isnan.cpp
        issue_3926.cpp
        iterate_over_circle.cpp
        lambda.cpp
        lazy_convolution.cpp
        leak_device_memory.cpp
        left_shift_negative.cpp
        legal_race_condition.cpp
        lerp.cpp
        let_in_rdom_bound.cpp
        likely.cpp
        load_library.cpp
        logical.cpp
        loop_invariant_extern_calls.cpp
        loop_level_generator_param.cpp
        lots_of_dimensions.cpp
        make_struct.cpp
        many_dimensions.cpp
        many_small_extern_stages.cpp
        many_updates.cpp
        math.cpp
        median3x3.cpp
        memoize_cloned.cpp
        memoize.cpp
        min_extent.cpp
        mod.cpp
        mul_div_mod.cpp
        multi_output_pipeline_with_bad_sizes.cpp
        multipass_constraints.cpp
        multi_pass_reduction.cpp
        multiple_outputs.cpp
        multiple_outputs_extern.cpp
        multi_splits_with_diff_tail_strategies.cpp
        multi_way_select.cpp
        named_updates.cpp
        nested_shiftinwards.cpp
        newtons_method.cpp
        non_vector_aligned_embeded_buffer.cpp
        obscure_image_references.cpp
        oddly_sized_output.cpp
        opencl_runtime.cpp
        out_constraint.cpp
        out_of_memory.cpp
        output_larger_than_two_gigs.cpp
        parallel_alloc.cpp
        parallel.cpp
        parallel_fork.cpp
        parallel_gpu_nested.cpp
        parallel_nested_1.cpp
        parallel_nested.cpp
        parallel_reductions.cpp
        parallel_rvar.cpp
        param.cpp
        parameter_constraints.cpp
        param_map.cpp
        partial_application.cpp
        partial_realization.cpp
        partition_loops_bug.cpp
        partition_loops.cpp
        pipeline_set_jit_externs_func.cpp
        plain_c_includes.c
        popc_clz_ctz_bounds.cpp
        predicated_store_load.cpp
        prefetch.cpp
        print.cpp
        process_some_tiles.cpp
        pseudostack_shares_slots.cpp
        python_extension_gen.cpp
        random.cpp
        realize_larger_than_two_gigs.cpp
        realize_over_shifted_domain.cpp
        reduction_chain.cpp
        reduction_non_rectangular.cpp
        reduction_schedule.cpp
        register_shuffle.cpp
        reorder_rvars.cpp
        reorder_storage.cpp
        require.cpp
        reschedule.cpp
        reuse_stack_alloc.cpp
        rfactor.cpp
        round.cpp
        saturating_casts.cpp
        scatter.cpp
        set_custom_trace.cpp
        shared_self_references.cpp
        shifted_image.cpp
        side_effects.cpp
        simd_op_check.cpp
        simd_op_check_hvx.cpp
        simplified_away_embedded_image.cpp
        simplify.cpp
        skip_stages.cpp
        skip_stages_external_array_functions.cpp
        skip_stages_memoize.cpp
        sliding_backwards.cpp
        sliding_reduction.cpp
        sliding_window.cpp
        sort_exprs.cpp
        specialize.cpp
        specialize_to_gpu.cpp
        split_by_non_factor.cpp
        split_fuse_rvar.cpp
        split_reuse_inner_name_bug.cpp
        split_store_compute.cpp
        stack_allocations.cpp
        stencil_chain_in_update_definitions.cpp
        stmt_to_html.cpp
        storage_folding.cpp
        store_in.cpp
        stream_compaction.cpp
        strict_float_bounds.cpp
        strict_float.cpp
        strided_load.cpp
        target.cpp
        thread_safety.cpp
        tracing_bounds.cpp
        tracing_broadcast.cpp
        tracing.cpp
        tracing_stack.cpp
        transitive_bounds.cpp
        trim_no_ops.cpp
        truncated_pyramid.cpp
        tuple_partial_update.cpp
        tuple_reduction.cpp
        tuple_select.cpp
        tuple_undef.cpp
        tuple_update_ops.cpp
        two_vector_args.cpp
        undef.cpp
        uninitialized_read.cpp
        unique_func_image.cpp
        unroll_dynamic_loop.cpp
        unrolled_reduction.cpp
        unsafe_dedup_lets.cpp
        unsafe_promises.cpp
        unused_func.cpp
        update_chunk.cpp
        vector_bounds_inference.cpp
        vector_cast.cpp
        vector_extern.cpp
        vectorized_gpu_allocation.cpp
        vectorized_initialization.cpp
        vectorized_load_from_vectorized_allocation.cpp
        vectorized_reduction_bug.cpp
        vectorize_guard_with_if.cpp
        vectorize_mixed_widths.cpp
        vectorize_varying_allocation_size.cpp
        vector_math.cpp
        vector_print_bug.cpp
        widening_reduction.cpp
        )

# Make sure the test that needs image_io has it
target_link_libraries(correctness_image_io PRIVATE Halide::ImageIO)